package cn.xiaolang.function.exception;

import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 *
 * 如果使用的是Oracle JVM，则可能需要添加-XX:-OmitStackTraceInFastThrow作为附加参数，
 * 以查看是否有帮助。对于某些基本异常，JVM会在一段时间后重用同一异常实例，在这种情况下，
 * 不再有堆栈跟踪。此选项可防止重复使用，因此您始终可以获得堆栈跟踪。
 *
 * 编辑说明：这最后一个也可能适用于OpenJDK的最新版本(例如1.8)
 *
 * @author Dean
 * @date 2021-03-23
 */
@Slf4j
public class ArrayIndexOutOfBoundEx {

    public static void main(String[] args) {
        List<String> datas = Arrays.asList("A", "B");
        ExecutorService executors = Executors.newFixedThreadPool(10);
        for (int i = 0; i < 10000; i++) {
            executors.submit(() -> {
                try {
                    log.info(datas.get(3));
                } catch (Exception e) {
                   e.printStackTrace();
                }
            });
        }
    }
}
